home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Software Vault: The Gold Collection
/
Software Vault - The Gold Collection (American Databankers) (1993).ISO
/
cdr35
/
squser44.zip
/
SQUSER44.DOC
< prev
next >
Wrap
Text File
|
1993-06-06
|
20KB
|
529 lines
╔═════════════╗
║ ╔═════════╗ ║
║ ║ SQUsers ║ ║
║ ╚═════════╝ ║
╚═════════════╝
A Fidouser.lst generator for squish message bases amongst other things.
╔══════════════╗
║ Legal Stuff: ║
╚══════════════╝
SQUsers is my copyright material. You can use it! You can give it to
other people to use. It is not, however, guaranteed to do anything. In
the event that anything goes wrong, my liability is limited to the
amount that you can prove you paid me directly for it - and I don't
charge for it! It should work as described below. It's not my fault if
it doesn't, but if you're polite I'll try and fix it. It works on my PC,
I do not guarantee it will work on yours.
You may not distribute SQUsers without this document file. You may not
sell SQUsers. You may not charge in any way for the distribution of
SQUsers. This includes shareware libraries and BBSes that charge for
access. SQUsers must be distributed free of all charge. If you run a
software library and offer SQUsers, then if someone sends you a disk and
return postage you have to give them a copy. If you run a subscription
BBS, SQUsers must be in your free download area or nowhere on your
system. I'm sure you get the idea.
In other words, I didn't write this program, which I am releasing free
to anyone that wants it, so that anyone else could make money out of
copying it!
╔═════════╗
║ Purpose ║
╚═════════╝
SQUsers is a program designed to generate fidouser.lst style netmail
address look-up files from squish style message bases, fido *.msg style
message bases, nodelists, old fidouser.lst style files and msged/squish
style cc lookup files.
╔═════════════════╗
║ Historical Note ║
╚═════════════════╝
I wrote SQUsers in TurboC 1.5 originally, and it was not bad, but it
had a few problems. I have recently upgraded my compiler to BorlandC
3.00++, and this seems to have got rid of some of the problems, it also
means I can compile 80286 code. The program is now up to version 4.10,
and this will probably be the first public beta version.
╔══════════════╗
║ Useage Notes ║
╚══════════════╝
The archive contains two versions of the program, squservx.exe is an
8086 compiled version, squservx.286 is the 80286 code. It also contains
this doc file. "vx" are the major and minor version numbers. Released
versions will always have a minor version of 0. Anything other than
squserx0 is a beta version. The same applies to the docs (this file) and
the distribution archive.
SQUsers will use as much memory as it can find to hold a linked list
of names and fido addresses, and if it fills the whole of available ram
up will then start using temp data files. Processing the full FidoNet
nodelist, 20 Mbytes of squish message files, a 1.3 MegaByte input file
(from an earlier run), several smaller files etc created a total of five
temp files, another 3 were created during the merger, and finally the
output file was created - on my 25 MHz 80386 with 6 Mb of disk cache
this took about 45 minutes - but it was a lot of data to process.
The theoretical limit to the number of usernames is about 16 million,
but I haven't proved that, and it will probably be a bit higher. Someone
might reach it one day. That will be some address book!
Note that SQUsers creates temp files of the form $SQUSER$.xxx where
xxx is a 3 digit hex number. Please make sure no such files exist in
the directory you run SQUsers from, it will check when it starts, and
refuse to do anything if it finds any!
SQUsers can take a config file name as its only parameter, failing
that it will look for "SQUSERS.CFG" in the current directory. The config
file tells SQUsers a lot about how it should work, where to find files
and where to leave its output file. If SQUsers is unable to find a
config file, it will create a very short sample config and exit.
╔════════╗
║ Output ║
╚════════╝
SQUsers will let you know what it's doing as it processes the config
file and the input files. It may occasionally reccomend that you run
sqpack or sqfix on a squish area, and will report any problems it has
internally. The output can be redirected to a log file if you start
SQUsers up with a redirection for stdout on the command line, eg:
SQUSERS > squsers.log
╔══════════════╗
║ Error Levels ║
╚══════════════╝
SQUsers will exit with an errorlevel of 0 if it ends OK, or with 1 if
there's a problem - it will also print an error message and give an
internal error code. If the problem isn't obvious then the best thing to
do is netmail me, it may mean a problem with the program. (I hope not.)
At the moment the program does a lot of error checking on file open and
close, memory allocation, reads and writes etc. As I get more confident
with it, I may remove some of this to speed things up.
╔═════════════════╗
║ The Config File ║
╚═════════════════╝
This is a sample SQUsers.CFG file:
;-------------------------------------------------------------------------
;
; Squsers.cfg file for 2:251/20
;
; Use buffers for textfile read / write
;
buffers on
;
; Output file: squsers.lis in current dir
;
outfile squsers.lis
;
; My address 2:251/20
;
address 2:251/20
;
; Old fidouser.lst style list to use
;
oldlist c:\fd\squsers.lis
;
; And another old fidouser.lst file
;
oldlist c:\fd\sysops.lis
;
; Squish files c:\sqbase\fido\*.sqd
;
squish c:\sqbase\fido\*.sqd
;
; I want the adresses used in the UK sysop echo (region25) to be used in
; preference to any other addresses from nodelist or message bases.
;
squish c:\sqbase\fido\region25.sqd
;
; **** Beta Option Only ****
;
; Suppose it crashes on your netmail area, turn on enhanced progress
; reporting here .....
;
debug on
;
; netmail messages c:\netmail\*.msg
;
; This is also used for echomail kept in FTS1-015 (Fido) *.msg format.
;
; The fido directory spec must end in a trailing backslash! This was not
; made clear in earlier versions!!
;
fido c:\netmail\
;
; **** Beta Option Only ****
;
; Turn off the enhanced progress reporting used on the netmail area
;
debug off
;
; Use nodelist c:\nodelist\nodelist.*, process the whole nodelist. You can
; process multiple nodelists. If a wildcard is used then it will look for
; file.nnn where nnn is a numeric sequence.
;
nodelist c:\nodelist\nodelist.* 0 0 0
;
; Use nodelist c:\nodelist\nodelist.*, process zone 2 region 25 to make
; sure that where a name has more than one address I get the UK one.
;
nodelist c:\nodelist\nodelist.* 2 25 0
;
; I want the adresses used in the UK sysop echo (region25) to be used in
; preference to any other addresses from nodelist or message bases, so I
; insert that next.
;
squish c:\sqbase\fido\region25.sqd
;
; This fidouser.lst style file has some addresses that I want to over-ride
; any other addresses found for that person
;
oldlist c:\fd\override.lis
;
; MsgEd/Squish Beta Team List
;
pvtlist c:\fd\betamsq.lis
;
; My echomail links
;
pvtlist c:\fd\links.lis
;
; My SQUsers beta testers
;
pvtlist c:\fd\squser.lis
;
; End of squsers.cfg file
;
;-------------------------------------------------------------------------
Lets look at the file. The comment lines are indicated by a semi-colon
in the first column - I know some people support a semi-colon on a
command line with comments after it, but I haven't got that far yet.
Maybe next week / month / year. Likewise all commands begin in column
one. All keywords are optional, but if you don't put in a sensible
selection the program may not do very much other than create a zero
length list file. If there is no config file, it won't even do that. It
is obviously a good idea to define at least one input file using either
squish, fido, pvtlist, oldlist or nodelist if you want the program to do
anything sensible.
The file is parsed line by line, keywords can be used as many times as
is needed to get the desired result. This can be seen in the above file.
The numbers of spaces dividing commands and parameters on each line
are not too important, as long as it's at least one, but each command
and the associated parameter(s) must be on a single line.
┌──────────────────┐
│ buffers <state> │
└──────────────────┘
The buffers command controls whether squish uses internal 16Kb buffers
when reading from and writing to text files. <state> may be "on" or
"off". Text files are the output file, any input files defined as
nodelist, fido, pvtlist or oldlist, and any temp files created due to
insufficient memory to hold all the usernames & addresses found as a
single group of lists. Buffers are allocated and deallocated on the fly,
the maximum overhead during data collection is 16 Kb, although this
rises to 48 Kb when merging temp files. (There is no linked list in use
while merging temp files though.) It is suggested that you either omit
the command (the default is off) or use "buffers off" if you have a read
ahead cache of any sort and / or a write cache, however it may be
worthwhile to experiment. If you have no cache at all, "buffers on" will
almost allways give a noticeable improvement in processing speed.
┌─────────────────────┐
│ outfile <filename> │
└─────────────────────┘
This tells SQUsers where to put its output, the default if this is
left out is to create "squsers.lst" in the current directory. If more
than one outfile keyword is used, the last one in the config file will
determine the output file. It does not make a lot of sense to use this
entry more than once.
┌────────────────┐
│ debug <state> │
└────────────────┘
New parameter for beta versions, state can be "on" or "off", and
enables / disables enhanced progress reporting, including procedure &
function entry with parameters etc.
┌────────────────────────┐
│ address <fido address> │
└────────────────────────┘
This is your fidonet address. No-one will be included in the list if
their address matches yours, it is assumed that you don't need to use
netmail for local users. If you leave this out, SQUsers will just
include everyone it finds.
Setting this to 0:0/0 disables address rejection, so you can have your
Fido address rejected processing one set of input files, then you
othernet address for your othernet files, and your thirdnet address for
the next set etc ......., then finally turn it off while you process the
local message area. This would make sure that you didn't send netmail to
other systems for people who used your local netmail area.
┌─────────────────────┐
│ Oldlist <filename> │
└─────────────────────┘
Filename must be a real filename, no wildcards.
This indicates an old fidouser.lst style file to incorporate in to the
new list. Note that the only format requirements for the file are as
follows:
(a) It must have one entry per line.
(b) Entries must be: <lastname>, <firstnames><spaces><address>
(c) Spaces must have two or more spaces.
Multiple lists can be combined using squsers, in the order that they
are included. The latest address found for an individual will be the one
that ends up in the output file. Although FIDOUSER.LST files are
normally sorted, and usually have the addresses right justified, SQUsers
isn't too fussy about this, instead it only requires that there be at
least two spaces between the username and the address. As the standard
for max name length is 36 characters in the FTSC1 message and packet
standards, and the Squish message base format, and as the address in a
fidouser.lst file is meant to start after column 40-something, this
should not be a problem.
┌────────────────────┐
│ squish <filespec> │
└────────────────────┘
This is the filespec of a squish area (or areas) to process. Again, if
you have multiple directories, or wish to specify an order for
processing your files instead of the order in which the directory
look-up routine finds matching files, you can use the keyword as many
times as you like.
Filespec may be a full path and filename of a single *.sqd file, or a
wildcard of the form [drive:][\path\]*.sqd where drive and path are
optional, and * may be a partial or completely wildcarded name. The .sqd
is important.
For example, supposing you have squish areas for fidonet, worldnet and
copsnet, and in addition want your fido regional sysops echo to be used
if a name crops up with more than one address:
squish c:\squish\msg\fido\*.sqd
squish c:\squish\msg\cops\*.sqd
squish c:\squish\msg\world\*.sqd
squish c:\sqbase\msg\fido\uksysop.sqd
Note that in this example, if the same surname crops up in more than
one area, the address used will be the last one processed, so if Joe
Smith has entered messages in every message area on your system, the Joe
Smith who left a message in uksysop is the one who ends up in the
userlist.
┌───────────────────┐
│ Fido <directory> │
└───────────────────┘
The path to any fido (*.msg) areas you want to process, this is used
in a similar way to the squish <filespec> keyword, but you may only
specify one directory (echomail or netmail area) per line, with no
wildcards. The path must terminate in a backslash '\' character.
┌───────────────────────────────────────────┐
│ nodelist <filespec> <zone> <region> <net> │
└───────────────────────────────────────────┘
If the filetype is wildcarded, as in the above example config file,
SQUsers will try and find a file matching filespec.nnn, otherwise it
will try and match the actual file. Zone, Region and Net work as
follows:
nodelist c:\nodelist\nodelist.* 0 0 0
This will try and process the whole nodelist, it will (if this is a
Fido nodelist) take a lot of time and involve temp data files and lots
of disk access.
nodelist c:\nodelist\nodelist.* 2 0 0
This will process all the nodes in zone 2. You can of course use other
zones, and to process all the nodes except zone 5 (for example) you
would include separate lines for zones 1, 2, 3, 4 and 6.
nodelist c:\nodelist\nodelist.* 2 25 0
This will process only those nodes within zone 2 region 25.
nodelist c:\nodelist\nodelist.* 2 25 251
This will process only those nodes in zone 2, region 25, net 251.
nodelist c:\nodelist\nodelist.* 2 0 0
nodelist c:\nodelist\nodelist.* 1 14 141
This will process all of zone 2 and net 141, region 14 in zone 1.
SQUsers can produce a very selective extract from the nodelist if the
config file is set up correctly. SQUsers can not process nodelists that
use "boss" or "point" keywords.
┌────────────────────┐
│ Pvtlist <filename> │
└────────────────────┘
This is another way to incorporate lists of people in the final
fidouser.lst file, the format of a pvtlist is one entry per line, in the
form:
<name>!<address>
eg:
John Doe!1:222/333
Denis McMahon!2:251/20
etc ......
Note that, if you happen to use MsgEd/Squish by John Dennis, this is
the same format as the netmail cc files use. This means that you can
incorporate the names and addresses in those files straight in to your
userlist.
╔═════════════════════╗
║ Processing Sequence ║
╚═════════════════════╝
Note that in the above example config, the input files are processed
in the following order:
oldlist c:\fd\squsers.lis
oldlist c:\fd\sysops.lis
squish c:\sqbase\fido\*.sqd
squish c:\sqbase\fido\region25.sqd
fido c:\netmail\*.msg
nodelist c:\nodelist\nodelist.* 0 0 0
nodelist c:\nodelist\nodelist.* 2 25 0
squish c:\sqbase\fido\region25.sqd
oldlist c:\fd\override.lis
pvtlist c:\fd\betamsq.lis
pvtlist c:\fd\links.lis
pvtlist c:\fd\squser.lis
Remember that the last address found is the one used, so, for
example, an address in the oldlist file c:\fd\override.lis would be used
in preference to one found in the nodelist if the usernames were the
same, and the pvtlist files take priority over the squish and fido
message areas etc.
Note that this rule may not hold true if temp files are used, as they
may be merged in the wrong order.
╔═════════╗
║ History ║
╚═════════╝
This is a precis of the revision history etc.
Version 1.00 - First public beta - several problems, and I had a
compiler problem at the same time. However, I kept tinkering and it
slowly improved through Version 2.0. Version 2 would usually generate a
reasonable userlist from a group of squish areas, but not much else.
Version 3.00 - This was the first one I compiled with the Borland C++
V3.00 compiler - and was a great place to start for the next stage. The
enhancements from here on in are numerous, bute here goes, this list
takes it up to 4.2, and is not in order of implementation:
Improved list handling and io routines for spead.
Implemented Nodelist, PvtList, OldList handlers.
Got Fido handler to work.
Detects Squish empty / bad frames instead of crashing.
Temp File Merger now combines files in the right order.
Comments in the config file.
Make a sample config if not found.
Doesn't write empty files any more. (It actually deletes them
after writing!)
Error exit clean-up improved.
Version 4.3
Fixed a problem with the Fido *.msg handling - I was using the wrong
pointer when I filled a block of memory with 0x00 bytes - this was found
after Clay reported a lock-up.
Fixed a piece of code in the Squish area handling - it wasn't always
processing the whole message base.
Thanks to Clay Tinsley for pointing these ones out! :-)
Added the "Buffers" config command.
Realised that even with the modified code, SQUsers could not allways
be guaranteed to combine temp files such that the "use last address
found" principle was guaranteed to work all the time.
I'm working on this, but I can't see an easy to implement and
foolproof solution at the moment.
Version 4.4
Removed some code that I left in there while debugging. Whoops.
Implemented "User Debug" option, on beta versions enhanced progress
reporting can be enabled at any point in the config file with "debug on"
and disabled with "debug off". Like address and buffers, this applies
while processing the input files listed after the switch.
Compiled beta versions with Debugger info, if you have Turbo Debugger
and know how to use it you may be able to give me the line numbers in
the source file that cause the errors.
A couple of cosmetic changes, reporting nets skipped while looking
through the nodelist for the required zone / region / net was generating
a lot of noise on the screen.
╔═════════════════╗
║ And Finally ... ║
╚═════════════════╝
Thanks to Don Dawson and Johan Lindqvist for their help with testing
version 1, and (I hope) version 4.xx. Thanks also to all the others that
have been helping me with version 4.xx testing, to Scott Dudley who
developed the Squish message base and John Dennis who developed Jim
Nutts' MsgEd code in to a Squish compatible message editor.
All trade marks copyrights etc are acknowledged.
I think that explains it all. The author may be contacted at:
2:251/20@FidoNet
Which is a mail only node accepting netmail from listed FidoNet nodes
between 00:00 and 06:00 UTC.
Denis McMahon
29th May 1993